import axios from 'axios' // 导入 axios 模块
import router from '@/router' // 导入 router 模块
import { useUserStore } from '@/store_pinia' // 导入用户登录状态信息

// 封装请求模块
const request = axios.create({
  baseURL: 'https://shop.fed.lagounews.com/api'
})

// 请求拦截
request.interceptors.request.use(config => {
  // 实例化容器
  const userStore = useUserStore()

  // 获取本地用户 token
  const { token } = userStore.user ?? ''

  // 判断本地是否有 token 数据
  if (token) {
    // 存在 token，请求的时候，自动添加上 token 数据
    config.headers.Authorization = 'Bearer ' + token
  }

  return config
})

// 响应拦截
// 在响应拦截器中进行失败处理
request.interceptors.response.use(config => {
  // 获取响应状态码
  const { status } = config.data

  if (status === 410000) {
    // 当响应的状态码为 410000 时，表示用户未登录，跳转到登录页面
    router.push({
      name: 'login',
      params: {
        redirect: router.currentRoute._value.fullPath
      }
    })
  }

  // 只需要获取响应的数据
  return config.data
})

export default request // 导出
